import { createRouter, createWebHistory } from 'vue-router'
import Login from '../components/Login.vue'
import Register from '../components/Register.vue'
// 为不同角色创建专门的首页组件
import AdminDashboard from '../components/AdminDashboard.vue'
import UserDashboard from '../components/UserDashboard.vue'
// 个人信息管理和用户管理组件
import ProfileManagement from '../components/ProfileManagement.vue'
import UserManagement from '../components/UserManagement.vue'
// 任务相关组件
import PublishTask from '../components/PublishTask.vue'
import BrowseTasks from '../components/BrowseTasks.vue'
import MyPublishedTasks from '../components/MyPublishedTasks.vue'
import MyAcceptedTasks from '../components/MyAcceptedTasks.vue'
// 管理员任务管理组件
import TaskManagement from '../components/TaskManagement.vue'
// 任务评价管理组件
import TaskEvaluationManagement from '../components/TaskEvaluationManagement.vue'

const routes = [
  {
    path: '/',
    redirect: '/login'
  },
  {
    path: '/login',
    name: 'Login',
    component: Login
  },
  {
    path: '/register',
    name: 'Register',
    component: Register
  },
  // 管理员首页
  {
    path: '/admin',
    name: 'AdminDashboard',
    component: AdminDashboard,
    meta: { role: 0 } // 管理员
  },
  // 用户首页（适用于普通用户）
  {
    path: '/user',
    name: 'UserDashboard',
    component: UserDashboard,
    meta: { role: 1 } // 普通用户
  },
  // 个人信息管理页面
  {
    path: '/profile',
    name: 'ProfileManagement',
    component: ProfileManagement
  },
  // 用户管理页面（仅管理员可用）
  {
    path: '/users',
    name: 'UserManagement',
    component: UserManagement,
    meta: { role: 0 } // 管理员
  },
  // 发布任务页面
  {
    path: '/publish-task',
    name: 'PublishTask',
    component: PublishTask,
    meta: { role: 1 } // 普通用户
  },
  // 浏览任务页面
  {
    path: '/browse-tasks',
    name: 'BrowseTasks',
    component: BrowseTasks,
    meta: { role: 1 } // 普通用户
  },
  // 我发布的任务页面
  {
    path: '/my-published-tasks',
    name: 'MyPublishedTasks',
    component: MyPublishedTasks,
    meta: { role: 1 } // 普通用户
  },
  // 我接取的任务页面
  {
    path: '/my-accepted-tasks',
    name: 'MyAcceptedTasks',
    component: MyAcceptedTasks,
    meta: { role: 1 } // 普通用户
  },
  // 任务管理页面（仅管理员可用）
  {
    path: '/task-management',
    name: 'TaskManagement',
    component: TaskManagement,
    meta: { role: 0 } // 管理员
  },
  // 任务评价管理页面（仅管理员可用）
  {
    path: '/task-evaluation-management',
    name: 'TaskEvaluationManagement',
    component: TaskEvaluationManagement,
    meta: { role: 0 } // 管理员
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

// 添加路由守卫，确保用户只能访问对应角色的页面
router.beforeEach((to, from, next) => {
  // 获取存储的用户信息
  const userStr = localStorage.getItem('user')
  if (userStr) {
    const user = JSON.parse(userStr)
    // 检查路由是否需要特定角色
    if (to.meta.role !== undefined) {
      // 如果角色匹配，则允许访问
      if (to.meta.role === user.role) {
        next()
      } else {
        // 角色不匹配，重定向到对应角色的首页
        if (user.role === 0) {
          next('/admin')
        } else if (user.role === 1) {
          next('/user')
        } else {
          next('/login')
        }
      }
    } else {
      next()
    }
  } else {
    // 如果没有用户信息且访问的不是登录/注册页面，则重定向到登录页
    if (to.path !== '/login' && to.path !== '/register') {
      next('/login')
    } else {
      next()
    }
  }
})

export default router